Metadata is data about data. In a business context, metadata can be used to define information about a business application. For example, metadata can define the business entities with which the business application interacts and the methods available in the business application to obtain business data. Metadata is stored separately from the actual data used in the business application.
Metadata models describe the APIs exposed by business systems. These models are utilized by a runtime engine to map or transform the APIs on the business systems into a canonical business data access API provided by the runtime engine. Thus, when a user provided application invokes the canonical API, depending on the metadata model, the appropriate API on the business system is invoked. Changing the metadata model changes the behavior of the application without needing to recompile or rewrite the application.
The metadata models are typically provided in a static format by a design tool or a text editor. When a business data operation requests metadata, the metadata is typically obtained from a metadata store. The obtained metadata is used by the runtime engine to perform business data operations. For example, a business data operation may be obtaining information about a customer given a customer ID. This business data operation may need metadata about the operation. When a request for this metadata is made, the metadata store returns the name and parameters of this method along with any other information that is required to invoke this method. The method is an API specific to the business system that includes the customer information.
The metadata store includes APIs for business systems described in the metadata model. Some business systems have APIs that are similar in syntax. For example, a method for obtaining information about a product given a product ID may be similar in syntax to a method for obtaining information about a customer given a customer ID. However, with a static metadata model, metadata for each API is typically included separately in the metadata store, even if the syntaxes are similar. This increases the storage requirements for the metadata store. In addition, if the APIs change, the metadata model needs to be changed to accommodate the modifications.